//package com.bbcare.jiangmen.service.impl;
//
//import cn.hutool.core.util.StrUtil;
//import cn.hutool.core.util.XmlUtil;
//import com.alibaba.fastjson.JSONObject;
//import com.bbcare.jiangmen.pojo.JiangmenPatientConver;
//import com.bbcare.jiangmen.service.IHisInfoJiangmenService;
//import com.bbcare.jiangmen.util.MqEwellService;
//import com.bbcare.jiangmen.util.PageHelper;
//import com.github.pagehelper.PageInfo;
//import org.apache.commons.beanutils.BeanUtils;
//import org.apache.commons.lang.StringUtils;
//import org.springframework.stereotype.Service;
//
//import java.lang.reflect.InvocationTargetException;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//import java.util.regex.Matcher;
//import java.util.regex.Pattern;
//
///**
// * @Title		HisInfoJiangmenServiceImpl.java
// * @Package		com.bbcare.qianxinan.service.impl
// * @Description	江门his业务处理
// * @Author		<a href="mailto:jiangqian_java@163.com">jiang</a>
// * @Date		2023/6/5
// * @Version		V1.0
// * @Copyright	(c) Shanghai BBcare Medical Equipment Co.,Ltd.
// */
//@Service
//public class HisInfoJiangmenServiceImpl implements IHisInfoJiangmenService {
//
//    @Override
//    public PageInfo getPatientList(JSONObject jsonObject, List<String> deptCodeList) {
//
//
//        String start = (String) jsonObject.get("start_time");
//        String end = (String) jsonObject.get("end_time");
//        Integer status = (Integer) jsonObject.get("type");
//        Integer pageSize = (Integer) jsonObject.get("pageSize");
//        Integer pageNum = (Integer) jsonObject.get("pageNum");
//
//        List<JiangmenPatientConver> jiangmenPatientConvers = null;
//        //正式环境数据组装查询
//        String fid = "";
//        String orderNo = "";
//        String query = "";
//        for (String deptCode : deptCodeList) {
//            if(status == 0){
//                //在院
//                fid = "BS10003";
//                orderNo = "BS10003S16001";
//                query = "<query item=\"CURR_DEPT_CODE\" compy=\"=\" value=\"'"+ deptCode +"'\" splice=\"AND\"/>" +
//                        "<query item=\"ADMIT_DATE\" compy=\"&gt;\" value=\"'" +start+ "'\" splice=\"AND\"/>" +
//                        "<query item=\"ADMIT_DATE\" compy=\"&lt;\" value=\"'" +end+ "'\" splice=\"AND\"/>";
//            }else if(status == 1){
//                fid = "BS10005";
//                orderNo = "BS10005S16001";
//                query = "<query item=\"DISCHARGE_DEPT_CODE\" compy=\"=\" value=\"'"+deptCode+"'\" splice=\"AND\"/>" +
//                        "<query item=\"DISCHARGE_DATE_1\" compy=\"&gt;\" value=\"datediff(day,'1899-12-30',' "+ start +"')\" splice=\"AND\"/>" +
//                        "<query item=\"DISCHARGE_DATE_1\" compy=\"&lt;\" value=\"datediff(day,'1899-12-30',' "+ end +"')\" splice=\"AND\"/>";
//            }
//            String resXml = MqEwellService.getDataFromMq(fid, orderNo, query);
//            jiangmenPatientConvers = this.handlePatientListByEsb(resXml);
//            //获取住院病历信息
//            for (JiangmenPatientConver jiangmenPatientConver : jiangmenPatientConvers) {
//                fid = "BS10046";
//                orderNo = "BS10046S16001";
//                query = "<query item=\"INHOSP_INDEX_NO\" compy=\"=\" value=\"'"+jiangmenPatientConver.getINHOSP_INDEX_NO() +"'\" splice=\"AND\"/>";
//                resXml = MqEwellService.getDataFromMq(fid, orderNo, query);
//                JiangmenPatientConver patientConver = this.handlePatientDetailByEsb(resXml, jiangmenPatientConver);
//            }
//        }
//        PageInfo pageInfo = PageHelper.pageHelper(jiangmenPatientConvers, pageNum, pageSize);;
//        return pageInfo;
//    }
//
//    @Override
//    public PageInfo getPatientInfoByVisitCardNo(JSONObject jsonObject) {
//
//
//        String visitCardNo = (String) jsonObject.get("visitCardNo");
//        Integer pageSize = (Integer) jsonObject.get("pageSize");
//        Integer pageNum = (Integer) jsonObject.get("pageNum");
//
//        List<JiangmenPatientConver> jiangmenPatientConvers = null;
//        //正式环境数据组装查询
//        String fid = "BS35009";
//        String orderNo = "BS35009S16001";
//        String query = "<query item=\"VISIT_CARD_NO\" compy=\"=\" value=\"'  " +visitCardNo+ " '\" splice=\"AND\"/>";
//        String resXml = MqEwellService.getDataFromMq(fid, orderNo, query);
//        jiangmenPatientConvers = this.handlePatientListByEsb(resXml);
//        PageInfo pageInfo = PageHelper.pageHelper(jiangmenPatientConvers, pageNum, pageSize);;
//        return pageInfo;
//    }
//
//    private JiangmenPatientConver handlePatientDetailByEsb(String resXml, JiangmenPatientConver jiangmenPatientConver){
//        Map<String, Object> stringObjectMap = XmlUtil.xmlToMap(resXml);
//        System.out.println("响应信息" + stringObjectMap);
//        if (stringObjectMap.containsKey("RetInfo")) {
//            Map<String, Object> RetInfo = (Map<String, Object>) stringObjectMap.get("RetInfo");
//            if (RetInfo.containsKey("RetCode") && RetInfo.get("RetCode").equals("1")) {
//                Map<String, Object> queryDataResponse = (Map<String, Object>) stringObjectMap.get("MsgInfo");
//                if (queryDataResponse.containsKey("Msg")) {
//                    List<String> list = (List) queryDataResponse.get("Msg");
//                    for (String result : list) {
//                        if (StrUtil.isNotEmpty(result)) {
//                            //手动去除多余一层的cdata
//                            //正则转化font写法
//                            String patternFont = "<!\\[CDATA\\[(.*?)]]>";
//                            // 创建 Pattern 对象
//                            Pattern p2 = Pattern.compile(patternFont);
//                            Matcher m2 = p2.matcher(result);
//                            if (m2.find()) {
//                                result = m2.replaceAll("$1");
//                            }
//                            Map<String, Object> tempMap = XmlUtil.xmlToMap(result);
//                            if(tempMap.containsKey("body")){
//                                Map<String, Object> body1 = (Map<String, Object>) tempMap.get("body");
//                                if(body1.containsKey("row")){
//                                    Map<String, Object> map = (Map<String, Object>) body1.get("row");
//                                    String course_content = (String) map.get("COURSE_CONTENT");
//                                    jiangmenPatientConver = this.getBirthInformation(course_content, jiangmenPatientConver);
//                                }
//                            }
//                        }
//                    }
//                }
//            }
//        }
//        return jiangmenPatientConver;
//    }
//
//    /**
//     * 从病历中截取相关出生信息
//     * @param courseContent
//     * @param jiangmenPatientConver
//     * @return
//     */
//    private JiangmenPatientConver getBirthInformation(String courseContent, JiangmenPatientConver jiangmenPatientConver){
//        if(courseContent.contains("出生史") && courseContent.contains("母孕史")){
//            courseContent = courseContent.substring(courseContent.indexOf("出生史"), courseContent.indexOf("母孕史"));
//            String reg = "(?<=出生体重：)[\\s\\S]*(?=身长：)";
//            Pattern p = Pattern.compile(reg);
//            Matcher m = p.matcher(courseContent);
//            if(m.find()){
//                jiangmenPatientConver.setBIRTH_WEIGHT(m.group().trim().substring(0,m.group().trim().length()-1).replaceAll("[a-zA-Z]+", ""));
//            }
//            reg = "(?<=身长：)[\\s\\S]*(?=头围：)";
//            p = Pattern.compile(reg);
//            m = p.matcher(courseContent);
//            if(m.find()){
//                jiangmenPatientConver.setBIRTH_HEIGHT(m.group().trim().substring(0,m.group().trim().length()-1).replaceAll("[a-zA-Z]+", ""));
//            }
//            reg = "(?<=头围：)[\\s\\S]*(?=分娩方式：)";
//            p = Pattern.compile(reg);
//            m = p.matcher(courseContent);
//            if(m.find()){
//                jiangmenPatientConver.setBIRTH_HEAD(m.group().trim().substring(0,m.group().trim().length()-1).replaceAll("[a-zA-Z]+", ""));
//            }
//        }
//        return jiangmenPatientConver;
//    }
//
//
//    private List<JiangmenPatientConver> handlePatientListByEsb(String resXml) {
//        List<JiangmenPatientConver> jiangmenPatientConvers = new ArrayList<>();
//        Map<String, Object> stringObjectMap = XmlUtil.xmlToMap(resXml);
//        System.out.println("响应信息" + stringObjectMap);
//        if (stringObjectMap.containsKey("RetInfo")) {
//            Map<String, Object> RetInfo = (Map<String, Object>) stringObjectMap.get("RetInfo");
//            if (RetInfo.containsKey("RetCode") && RetInfo.get("RetCode").equals("1")) {
//                Map<String, Object> queryDataResponse = (Map<String, Object>) stringObjectMap.get("MsgInfo");
//                if (queryDataResponse.containsKey("Msg")) {
//                    List<String> list = (List) queryDataResponse.get("Msg");
//                    for (String result : list) {
//                        if (StrUtil.isNotEmpty(result)) {
//                            //手动去除多余一层的cdata
//                            //正则转化font写法
//                            String patternFont = "<!\\[CDATA\\[(.*?)]]>";
//                            // 创建 Pattern 对象
//                            Pattern p2 = Pattern.compile(patternFont);
//                            Matcher m2 = p2.matcher(result);
//                            if (m2.find()) {
//                                result = m2.replaceAll("$1");
//                            }
//                            Map<String, Object> tempMap = XmlUtil.xmlToMap(result);
//                            if(tempMap.containsKey("body")){
//                                Map<String, Object> body1 = (Map<String, Object>) tempMap.get("body");
//                                if(body1.containsKey("row")){
//                                    Map<String, Object> map = (Map<String, Object>) body1.get("row");
//                                    JiangmenPatientConver jiangmenPatientConver = new JiangmenPatientConver();
//                                    try {
//                                        BeanUtils.populate(jiangmenPatientConver, map);
//                                        jiangmenPatientConvers.add(jiangmenPatientConver);
//                                    } catch (IllegalAccessException e) {
//                                        e.printStackTrace();
//                                    } catch (InvocationTargetException e) {
//                                        e.printStackTrace();
//                                    }
//                                }
//                            }
//                        }
//                    }
//                }
//            }
//        }
//        return jiangmenPatientConvers;
//    }
//}
